package com.example.roleplay.domain;

import lombok.Getter;

/**
 * AI角色技能枚举
 */
@Getter
public enum Skill {
    /**
     * 苏格拉底式提问技能
     * 通过提问引导用户思考，而不是直接给出答案
     */
    SOCRATIC("苏格拉底式提问", "通过引导性问题帮助用户自主思考和发现答案"),

    /**
     * 引文与出处技能
     * 从知识片段库中检索相关内容并附上出处
     */
    CITATION("引文与出处", "检索知识库并在回答中标注可靠的引用来源"),

    /**
     * 角色记忆与风格技能
     * 维护会话记忆，保持角色特定的语言风格和口癖
     */
    MEMORY("记忆与风格", "维护会话上下文记忆，保持角色一致的语言风格"),

    /**
     * 角色边界守卫技能（可选）
     * 防止越界请求，维护角色设定的边界
     */
    GUARDRAIL("边界守卫", "识别并礼貌拒绝超出角色设定范围的请求");

    private final String displayName;
    private final String description;

    Skill(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }

    /**
     * 根据技能名称查找技能
     */
    public static Skill fromName(String name) {
        for (Skill skill : values()) {
            if (skill.name().equalsIgnoreCase(name) || skill.getDisplayName().equals(name)) {
                return skill;
            }
        }
        throw new IllegalArgumentException("未知技能: " + name);
    }
}